/*
 * @Author: your name
 * @Date: 2021-07-27 13:55:36
 * @LastEditTime: 2021-07-27 17:25:00
 * @LastEditors: Please set LastEditors
 * @Description: In User Settings Edit
 * @FilePath: \cuiyuan_activity\preview-templates\wx.js
 */
// 1、提取微信返回的url的code和state   // ③
var getQueryString = function (name) {
  let reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  let r = window.location.search.substr(1).match(reg);
  if (r != null) return unescape(r[2]);
  return null;
}
var hasQueryString = function (name) {
  return window.location.search.indexOf(name) === 1 ? true : false;
}
/**
* 初始化分享
* @param share 
*/
var initShare = function (share) {
  initJssdk(share);
}
// 微信授权
var wxAuthorize = function () {
  let uri = getUri();
  let appid = "wxeaec62232b604b70";
  const url = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${appid}&redirect_uri=${uri}&response_type=code&scope=snsapi_userinfo&state=#wechat_redirect`
  window.location.href = url
}
// 微信登录
var wxLogin = function () {
  let uri = getUri();
  let code = localStorage.getItem('code')
  return fly.get(`http://192.168.1.200:8080/wx/wxUser/login?code=${code}&url=${uri}`)
}
// 获取当前网页的地址并进行编码
var getUri = function () {
  return encodeURIComponent(window.location.href.split('#')[0]);
}

//判断是否在微信中    
var isWechat = function () {
  var ua = window.navigator.userAgent.toLowerCase();
  if (ua.match(/micromessenger/i) == 'micromessenger') {
    return true;
  } else {
    return false;
  }
};
var initJssdk = function (share) {
  var uri = window.location.href.split('#')[0];
  fly.get(`http://192.168.1.200:8080//wx/share/getWxInfo?url=${uri}`).then(res => {
    let result = res.data.data
    wx.config({
      debug: false,
      appId: "wxeaec62232b604b70",
      timestamp: result.timestamp,
      nonceStr: result.noncestr,
      signature: result.signature,
      jsApiList: [ //这里是需要用到的接口名称  
        'checkJsApi', //判断当前客户端版本是否支持指定JS接口  
        'updateTimelineShareData', //分享接口  
        'getLocation', //获取位置  
        'openLocation', //打开位置  
        'scanQRCode', //扫一扫接口  
        'chooseWXPay', //微信支付  
        'chooseImage', //拍照或从手机相册中选图接口  
        'previewImage', //预览图片接口  
        'uploadImage', //上传图片 
        'updateAppMessageShareData',
        'onMenuShareQQ'
      ]
    });
    wx.ready(() => {
      wx.updateTimelineShareData({
        title: share.title, // 分享标题
        link: window.location.href, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: share.imgUrl, // 分享图标
        success: function () {
          // 用户点击了分享后执行的回调函数
          console.log('分享配置完成');
        }
      });
      wx.updateAppMessageShareData({
        title: share.title, // 分享标题
        desc: share.desc, // 分享描述
        link: window.location.href, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: share.imgUrl, // 分享图标
        type: share.type, // 分享类型,music、video或link，不填默认为link
        dataUrl: share.dataUrl, // 如果type是music或video，则要提供数据链接，默认为空
        success: function () {
          // 用户点击了分享后执行的回调函数
          if (callback) {
            // callback(res.data);
          }
        }
      });
      wx.onMenuShareQQ({
        title: share.title, // 分享标题
        desc: share.desc, // 分享描述
        link: window.location.href, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: share.imgUrl, // 分享图标
        success: function () {
          // 用户点击了分享后执行的回调函数
          if (callback) {

          }
        }
      });
      wx.onMenuShareQZone({
        title: share.title, // 分享标题
        desc: share.desc, // 分享描述
        link: window.location.href, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
        imgUrl: share.imgUrl, // 分享图标
        success: function () {
          // 用户点击了分享后执行的回调函数
          if (callback) {

          }
        }
      });
    })
  })
}
//在需要定位页面调用  
var getlocation = function (callback) {
  if (!this.isWechat()) {
    //console.log('不是微信客户端')  
    return;
  }
  this.initJssdk(function (res) {
    wx.ready(function () {
      wx.getLocation({
        type: 'gcj02', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'  
        success: function (res) {
          // console.log(res);  
          callback(res)
        },
        fail: function (res) {
          console.log(res)
        },
        // complete:function(res){  
        //     console.log(res)  
        // }  
      });
    });
  });
}
var openlocation = function (data, callback) { //打开位置  
  if (!this.isWechat()) {
    //console.log('不是微信客户端')  
    return;
  }
  this.initJssdk(function (res) {
    wx.ready(function () {
      wx.openLocation({ //根据传入的坐标打开地图  
        latitude: data.latitude,
        longitude: data.longitude
      });
    });
  });
}
var chooseImage = function (callback) { //选择图片  
  if (!this.isWechat()) {
    //console.log('不是微信客户端')  
    return;
  }
  //console.log(data);  
  this.initJssdk(function (res) {
    wx.ready(function () {
      wx.chooseImage({
        count: 1,
        sizeType: ['compressed'],
        sourceType: ['album'],
        success: function (rs) {
          callback(rs)
        }
      })
    });
  });
}
//微信支付  
var wxpay = function (data, callback) {
  if (!this.isWechat()) {
    //console.log('不是微信客户端')  
    return;
  }
  this.initJssdk(function (res) {
    wx.ready(function () {
      wx.chooseWXPay({
        timestamp: data.timestamp, // 支付签名时间戳，注意微信jssdk中的所有使用timestamp字段均为小写。但最新版的支付后台生成签名使用的timeStamp字段名需大写其中的S字符  
        nonceStr: data.nonceStr, // 支付签名随机串，不长于 32 位  
        package: data.package, // 统一支付接口返回的prepay_id参数值，提交格式如：prepay_id=\*\*\*）  
        signType: data.signType, // 签名方式，默认为'SHA1'，使用新版支付需传入'MD5'  
        paySign: data.paysign, // 支付签名  
        success: function (res) {
          // console.log(res);  
          callback(res)
        },
        fail: function (res) {
          callback(res)
        },
        // complete:function(res){  
        //     console.log(res)  
        // }  
      });
    });
  });
}
